递推与递归
(这个latex怎么总是崩啊啊啊啊。
###递推
首先,我们先不说什么叫递推,先来看一组数
组合数学学习笔记
先唠叨一句
小奥的组合数学是真的香,我当时csp2020-j初赛的组合数学题就用小奥+亿点枚举居然就都做对了:)
排列组合
两种原理
加法原理
假设你现在要从A城到B城市
有三种方法:
坐飞机有三条航线(蓝)
开车有三条高速(绿)
坐高铁有两班(棕)
那请问一共有几种选择?
3+3+2=83 + 3 + 2 = 8
3+3+2=8
诶嘿,这就是加法原理。
乘法原理
现在我们不去B城,去C城
但是要经过B城
请问一共有几种出行方式?
当我们走a到b的第一条路,b到c有8种可以选
当我们走a到b的第二条路,b到c有8种可以选
以此类推
当我们走a到b的第8条路,b到c有8种可以选
因此,A到B有8条路,B到C有8条路
那一共就有
8×8=648\times8 = 64
8×8=64
这就是乘法原理,非常简单。
基础排列组合
排列数
您和您的伙伴一共8人,要去C城,正在机场排队安检,请问您们有几种排队顺序?
可以想一下,现在有八个位置
现在您们8个人要抢第1个位置,也就是说第1个位置有八种选择
经过一番打斗后, 剩下的7个人去抢第二个位置,第2个位置有7种选择
以此类推
根据乘法原理 ...
14.高精度加法
1.0 问题
1.1 思路
1.2 完整代码
1.3 时间复杂度分析
1.0 问题
题目:P1601
在我们熟悉的数据类型中,能够储存的最大的数也只是longlong的范围。
虽然有些编译器也提供__int128类型,但是最多也只能表示40位左右的数,大小依然有限,而且适用范围也很受限。
那么,又没有办法来模拟非常长的整数呢?
所以用python他不香么,自带高精度还有各种库
手动 @€€£ (doge
1.1 思路
既然变量不能储存大数,我们可以尝试使用数组来储存一个数。
用数组的每一位来储存那个数字上的一位,也就是说,用一个长度为n的数组记录一个n位数字。
那么,问题又来了,我们如何进行加法运算呢
首先,回顾一下小学学习的竖式计算:
1234 1 9 1+ 9 8 1--------1 1 7 2
可以看到,用竖式计算时,为了保证进位正确,是从低位向高位运算的
我们可以模拟这个运算方法:
首先为了方便读入,使用string直接读入大数
将string类型的数转换为数字,并为了进位方便,倒叙存储在数组内
12345678910len1 = str1.length();len ...
2020CSP-J复赛游记
人傻了
网友面基成功√ ,感谢她送给我的妙蛙种子
赛前
心里还是很没谱的,想一下其实一年来大部分时间都在水群,以后注意
简单的跟朋友见面就进去了
试机写了一个a+b,听说朋友试机的时候敲了个线段树orz
不得不说南开中学还是很大的,但是貌似里边比较破(?
还是很强的,看见了不少南开的选手
还有四个英华的。
赛时
简单翻了一下,感觉自己要凉
先写了40分的T1
然后把T2写了一下,用了stl的sort,n = 20000 的样例目测t掉了
T2大概会T掉50%
然后看了一下T3和T4,又回去写T1
搞半天之后目测A掉了
T3T4就写了一个自我感觉能搞到0分的骗分
一看时间,妈耶还有俩小时
然后检查几遍文件名啥的,就开始玩
电脑里啥游戏也没有差评,谷歌小恐龙也没有,桌面小工具也没有,扫雷纸牌啥的也没有
然后大概把电脑里所有能玩的软件玩了一遍之后,还有一个半小时
盯着T3和T4发呆了半个小时
然后揉吧草稿纸半个小时
最后干发呆半个小时
结束了
结束铃声是一个老师拿着铃铛在外头敲 差评
赛后
和朋友去吃了个饭
第一年完了,也凉了
但是现在
赶紧回去学文化课准备月考才是最重要的了
不然,就真的凉 ...
赛前救命知识
还有1天复赛。
文化课太 ** 的 ** 了
考试注意事项相关
携带物品
准考证
参赛证
身份证
承诺书
健康码
时间地点
地点
南开中学北院翔宇楼五楼机房
时间
7:50进场试机
8:30开始比赛
12:00结束
文件相关
后缀名
test.cpp
存储
D盘下建立以准考证号为名的文件夹
并给每个题目建立子文件夹
记得删除无用文件
算法相关
程序框架(?)
12345678#include<iostream>using namespace std;int main(){ //code here return 0;}
C输入输出
头文件
1#include<cstdio>
输入:
1scanf("%d",&a);
输出:
1printf("a是%d",a);
其中,第一个参数是占位符,常用占位符:
%d int
%l64d longlong(windows)
%lld longlong(Linux)
%f float double(输出)
%lf double(读入)
%.2f ...
字符串复习笔记
暂且把它放在algorithm标签里,虽然说我不知道这算不算
还有2天就复赛了,真的是一点也不慌(确信)
主要还是文化课太**了以至于没时间搞
挤时间来复习一下,从字符串开始
声明变量
头文件#include < string >
string str
读入与写出
读入一段: cin >> str;
读入一行: getline(cin, str);
写出 :cout << str;
基操
(基情操作基本操作)
通过变量名操作整体
通过下标操作部分
比较 == != < > <= >= (使用acill码比较 (好像是这么拼的) )
拼接:str1+str2
常用函数
长度:str.size()
子串查找: str.find(子串) 返回的是第一个字母的下标
替换: str1 = str0.replace(起始下标,终止下标,替换内容)
截取: str1 = str0.substr(截取起始下标,终止下标)
写在最后
暂时想不到别的
普及组一般字符串题都比较水的吧模拟一下就好
总之对我来说不要产生低错就行
end ...
2020CSP-J初赛游记
1.赛前
准备
从赛前一周说起吧qwq
赛前一周开始着急,然后开始啃蓝书,写初赛博客(虽然没写完)
然后一直没完整的做过套题,甚至说连程序阅读和填空都几乎没碰过
但是国庆期间看似努力准备初赛其实在划水
一共就做了两三次不完整的往年的题,基本选择题的正确率在70%吧,阅读题没碰
一直到10月9号开始重视起来,那天在学校没事儿干,写了四页关于图的遍历的教程
10号才接触了原码反码补码
11号上午起来开始抱佛脚,先后复习了进制转换,一堆数学的东西,图片的存储还有一些排序。
然后12点半多就从家出发去考场
考前
到考场看好多人在看一个考点聚焦,就是一个知识点整合的小报,疑似是什么机构发的,窝也想看看但是没找到/kk。
还看见俩tctm的老师在喊:tctm的学院来签到! 差评
人反正挺多的,后来来了个大巴,里头下来十几个英华的学生(我一眼认出来我妈看了半天还不知道)果然是英华啊,有排面www。
嗯还看见有天津一中,南开,二南开的一堆大佬,,,ccccorz
约了一个网友面基,,,
赛时
进去本来想拍个照啥的,但是看都着急往里走也就没拍
那位网友也俩系不上了,算了不管了
我是9考场(考点天津第45 ...
COCI2017-2018#6
1 题目
2 思路
3 代码实现
1 题目
首先我们来看一下题目,精简一下大概就是
1某人要筹集n元,每周一筹集x,周二筹集x+k,周三x+2k,以此类推,到周日筹集x+6k,并且要在52个星期内筹集完,求x和k是多少时能刚好筹集n元。
2 思路
首先可以统计一下,每周筹集的钱数
周一 xxx
周二 x+kx+kx+k
周三 x+2kx+2kx+2k
周四 x+3kx+3kx+3k
周五 x+4kx+4kx+4k
周六 x+5kx+5kx+5k
周日 x+6kx+6kx+6k
把他们加起来,可算得每周可以筹集 7x+21k7x+21k7x+21k 元。
并且一共52个星期,一共筹集7x×52+21k×527x×52+21k×527x×52+21k×52元,也就是 364x+1092k364x+1092k364x+1092k 元。
同时,题目要求在满足条件的情况下,x尽可能大,k尽可能小,所以我们可以写一个嵌套循环,k在外层,x在内层,循环内部计算 364x+1092k364x+1092k364x+1092k 所得的值,当这个值等于我们要筹集的钱数n时,输出并跳出循环。
3 代码实现 ...
高精度加法复习笔记
1.0 问题
1.1 思路
1.2 代码
1.3 时间复杂度分析
1.4 写在最后
1.0 问题
在我们熟悉的数据类型中,能够储存的最大的数也只是longlong的范围。
虽然有些编译器也提供__int128类型,但是最多也只能表示40位左右的数,大小依然有限,而且适用范围也很受限。
那么,又没有办法来模拟非常长的整数呢?
1.1 思路
既然变量不能储存大数,我们可以尝试使用数组来储存一个数。
用数组的每一位来储存那个数字上的一位,也就是说,用一个长度为n的数组记录一个n位数字。
那么,问题又来了,我们如何进行加法运算呢
首先,回顾一下小学学习的竖式计算:
1234 1 9 1+ 9 8 1--------1 1 7 2
可以看到,用竖式计算时,为了保证进位正确,是从低位向高位运算的
我们可以模拟这个运算方法:
方便读入,使用string直接读入大数
将string类型的数转换为数字,并为了进位方便,倒叙存储在数组内
将两个数加起来
把两数的和对10取整,即进位。
例如
两数的和为9,对10取整为0,即进位为0;
两数的和为19,对10取整为1,即进1位、
处理 ...
20200620蓝桥杯省赛题目(北京)
qaq
一共5道题,部分题可能没有复制完整,先放题,题解和总结下午有时间写
选择题我就不放了吧?
样例和限制没复制,时间空间限制没写的话应该都是1000ms和125MB
有的是有图的,这个博客目前放不了图,正在修,所以先凑合看吧。
第一题
题目描述:
123456789在2020年这个漫长的寒假里,虽然小蓝和他的同学们都在家里,但依旧通过网课的方式坚持学习,而老师们也依旧会布置作业和发放各种电子版的学习资料。为了方便小蓝的学习,妈妈会把老师发放的材料打印出来。而为了环保,妈妈一般都进行双面打印,也就是一张纸的正反面都打印出相应的内容。举个例子来说:如果一份电子材料有3页,那么需要2张纸进行打印;如果一份电子材料有4页,那么还是需要2张纸进行打印。现在已经知道了一份电子版的学习材料的页数N,你能帮小蓝计算一下需要几张纸吗?
输入描述
1输入整数N(0≤N≤1000),代表一份电子版的学习材料的页数。
输出描述
1输出双面打印所需纸的张数。
第二题
编程实现:求完数
背景信息:
12345678因子:因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15 ...